1. Field of the Invention
The present invention relates to communication systems. More particularly, the present invention relates to a communication channel employing an error correction code (ECC) decoder enhanced by likely error events of a trellis sequence detector.
2. Description of the Prior Art
Various techniques are typically employed to maximize the realized capacity of a communication channel in terms of the rate that information can be transmitted through the channel and accurately reproduced at the receiver. Two techniques in wide use today are partial response (PR) equalization with maximum likelihood (ML) trellis sequence detection, and error correction codes (ECC) such as the well-known Reed-Solomon code. PR equalization allows for a controlled amount of inter-symbol interference with respect to the analog pulses representing the digital data transmitted through the channel. A trellis sequence detector at the receiver comprises a state machine matched to the PR equalization and outputs an estimated data sequence by selecting the most likely sequence through a trellis with respect to the signal samples input into the detector. An ECC code is then used to detect and correct errors in the estimated data sequence output by the trellis sequence detector. An ECC encoder encodes the digital data before transmission through the channel in order to generate redundancy symbols appended to the data to form ECC codewords. The received ECC codewords (in the estimated data sequence output by the trellis sequence detector) are then decoded by an ECC decoder at the receiver. The redundancy symbols enable the ECC decoder to detect and correct a predetermined number of errors in a received ECC codeword.
In a paper by J. Hagenauer and P. Hoeher entitled xe2x80x9cThe Viterbi Algorithm with Soft-Decision Outputs and Its Applications,xe2x80x9d Proceedings of the IEEE Globecom Conference, Dallas, Tex., pp. 47.1.1-47.1.7, November 1989, a technique is disclosed wherein a trellis sequence detector outputs reliability metrics for each bit in the estimated data sequence. The reliability metrics are computed relative to the channel metrics generated at each decision point through the trellis. The ECC decoder converts the reliability metrics corresponding to each bit in the estimated data sequence into reliability metrics for each symbol in an ECC codeword. The most unreliable symbols are then xe2x80x9cerasedxe2x80x9d so that the ECC decoder can perform xe2x80x9cerasurexe2x80x9d decoding. With erasure decoding, a codeword can be corrected as long as the number of errors t and the number of erasures e satisfy the inequality 2t+exe2x89xa6dminxe2x88x921. For every error transformed into an erasure, the decoding capability is clearly extended.
However, there are several drawbacks associated with the aforementioned technique of erasure decoding an ECC codeword using reliability metrics generated by a trellis sequence detector. Since a reliability metric is generated for each bit in the estimated data sequence, a significant amount of memory is needed to store the reliability metrics, and the memory increases as the resolution of the reliability metrics increases. Further, the probability of miscorrecting an ECC codeword increases as the number erasure pointers increases.
Another technique for enhancing the performance of a communication channel is disclosed by Roger Wood in xe2x80x9cTurbo-PRML: A Compromise EPRML Detectorxe2x80x9d, IEEE Transactions on Magnetics, Vol. 29, No. 6, November 1993. With Turbo-PRML, an error event detector is employed to detect likely error events of the trellis sequence detector. The most likely error events are then corrected prior to decoding the estimated data sequence by the ECC decoder. A problem with this technique, however, is that an error event may be falsely detected and miscorrected. Additional redundancy symbols can be added to the input stream to prevent miscorrections by the error event detector; however, the additional redundancy symbols decrease the code rate of the communication channel, and thus decrease the realized capacity of the communication channel.
There is, therefore, a need to enhance the performance of a communication channel in order to increase the channel""s realized capacity.
The present invention may be regarded as a communication channel comprising a sampler for sampling an analog data signal to generate a sequence of signal samples, a trellis sequence detector for detecting an estimated data sequence from the signal samples, and an error correction code (ECC) decoder. The estimated data sequence comprises a received codeword, wherein the ECC decoder detects and corrects errors in the received codeword. The trellis sequence detector comprises a metrics calculator for computing trellis state metrics relative to the signal samples and expected samples of valid output sequences, a memory for storing survivor data sequences associated with paths of the trellis, wherein the survivor data sequences comprise the estimated data sequence. The trellis sequence detector further comprises a memory controller, responsive to the state metrics, for updating the memory, and an error event detector for detecting an error event associated with the trellis sequence detector. The ECC decoder is responsive to the detected error event, and performs the following steps:
i. determining whether the received codeword comprises errors;
ii. determining whether the received codeword is correctable;
iii. if the received codeword is uncorrectable, modifying the received codeword relative to the error event; and
iv. repeating steps (i) and (ii) at least once.
The present invention may also be regarded as a method of transmitting data through a communication channel. An analog data signal is sampled to generate a sequence of signal samples. An estimated data sequence is detected from the signal samples, wherein the estimated data sequence comprises a received codeword. An error event is detected in the estimated data sequence, and used to detect and correct errors in the received codeword by performing the following steps:
i determining whether the received codeword comprises errors;
ii determining whether the received codeword is correctable;
iii if the received codeword is uncorrectable, modifying the received codeword relative to the error event; and
iv repeating steps (i) and (ii) at least once.